package Day18.BufferedStream;

/**
 * @version 1.0
 * @BelongsProject:IntelliJ IDEA
 * @BelongsPackage:Day18.BufferedStream
 * @Author:hyhWTX
 * @ClassName:Demo03CopyFile
 * @CreateTime:2022年-09月-20日 00:36
 * @Description: TODO (一句话描述以下该类的功能)
 */

import java.io.*;

/**
 *文件复制练习:一读一写明确:
 *      数据源:C:\\1.jpg.
 *      数据的目的地:d:\\1.jpg
 * 文件复制的步骤:
 *      1.创建字节缓冲输入流对象,构造方法中传递字节输入流
 *      2。创建字节缓冲输出流对象,构适方法中传递字节输出流
 *      3.使用字节缓冲输入流对象中的万法read,读取文件
 *      4.使用字书缓冲输出流中的方法write,把读取的政据写入到内部缓冲区中
 *      5.释放资源(会先把缓冲区中的数据,刷新到文件中）
 */

public class Demo03CopyFile {
    public static void main(String[] args) throws IOException {
        long s = System.currentTimeMillis();
        //1.创建字节缓冲输入流对象,构造方法中传递字节输入流
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\java黑马\\src\\Day18\\BufferedStream\\a.txt"));
        //2。创建字节缓冲输出流对象,构适方法中传递字节输出流
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\java黑马\\src\\Day18\\BufferedStream\\b.txt"));

        //3.使用字节缓冲输入流对象中的万法read,读取文件
//        //int read (从输入流中读取数据的下一个字节。
//        int len = 0;//记录每次读到的字节
//        while ((len = bis.read())!=-1){
//            bos.write(len);
//        }
        //使用数组缓冲读取多个字节，写入多个字节
        byte[] bytes = new byte[1024];
        int len = 0;
        while ((len = bis.read(bytes))!=-1){
            bos.write(bytes,0,len);
        }
        bis.close();
        bos.close();
        //4.使用字书缓冲输出流中的方法write,把读取的政据写入到内部缓冲区中
        //5.释放资源(会先把缓冲区中的数据,刷新到文件中）
        long e = System.currentTimeMillis();
        System.out.println("耗时共"+(e-s)+"毫秒");
    }
}
